package com.uva.dbcs.practica1.web.servlet;

import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.uva.dbcs.practica1.business.IVehiculosManejador;
import com.uva.dbcs.practica1.business.VehiculosManejador;
import com.uva.dbcs.practica1.modelo.VehiculoDTO;

/**
 * Servlet implementation class ReservasServlet
 */
public class ReservasServlet extends HttpServlet {
	
	private static final long serialVersionUID = 1L;
	private String ruta;
	private static final int count_paginacion = 5;
       

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		 
		
		try {
			processRequest(request, response);
		   } catch (SQLException ex) {
	            Logger.getLogger(Controlador.class.getName()).log(Level.SEVERE, null, ex);
	        } catch (ClassNotFoundException ex) {
	            Logger.getLogger(Controlador.class.getName()).log(Level.SEVERE, null, ex);
	       }
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		try {
			processRequest(request, response);
		   } catch (SQLException ex) {
	            Logger.getLogger(Controlador.class.getName()).log(Level.SEVERE, null, ex);
	        } catch (ClassNotFoundException ex) {
	            Logger.getLogger(Controlador.class.getName()).log(Level.SEVERE, null, ex);
	       }
	}
	
	protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException, SQLException, ClassNotFoundException {
        response.setContentType("text/html;charset=UTF-8");
        
        
        // se obtienen el numero de paginas que se usaran en la jsp de presentacion
        
        IVehiculosManejador manejador = new VehiculosManejador();
        
        int count = manejador.getVehiculosCount();
        Integer num_pags = 0;
        
        if (count%count_paginacion>0){
        	
        	num_pags= count/count_paginacion+1;
        	
        }else{
        	num_pags = count/count_paginacion;
        }
        
        // se meten el numero de pagina en la 
        request.setAttribute("paginas", num_pags);

        
        
        // ahora comprobamos la pagina a la que quiere ir el usuario
        // por defecto se irá a la 1.
        int pagina_solicitada;
        if (request.getParameter("pagina_solicitada")!=null){
        	
        	try{
        	 pagina_solicitada = Integer.parseInt(request.getParameter("pagina_solicitada"));
        	}catch (NumberFormatException e){
        		pagina_solicitada=1;
        	}
        	 
        }else{
        	pagina_solicitada =1;
        }
        
        request.setAttribute("pagina_solicitada", pagina_solicitada);
        
        
        // una vez que tenemos la pagina vamos a incluir los vehiculos que se van a mostrar
        // en la pagina solicitada
        
        int first = (pagina_solicitada-1) * count_paginacion;
        
       
        
      List<VehiculoDTO> lista_vehiculos =  manejador.obtenerVehiculosPaginados(first, count_paginacion);
	request.setAttribute("lista_vehiculos",lista_vehiculos);
       
       //************************************************************************
       // ahora vamos a construir una lista de booleanos que se correspondera
       // con la de de vehículos e indicará si el usuario tiene el carnet
       // adecuado para conducir el vehículo de manera que se pueda dibujar o
       // no el boton adecuado.       
       // solo hacemos esto si el usuario esta registrado.
	   //*************************************************************************
       
       if (request.getSession().getAttribute("us_id")!=null){
    	         
       List<Boolean> permisos_validos = new ArrayList<Boolean>();
       
       		/*for (VehiculoDTO vehDto: lista_vehiculos){
       			
       			if (manejador.vehiculoValidoParaCarnet(vehDto, 
       					(Integer)request.getSession().getAttribute("us_id"))){
       				permisos_validos.add(true);
       			}else{
       				permisos_validos.add(false);
       			}
       		}*/
       
       		
       		request.setAttribute("permisos_validos",permisos_validos );
       }
       
        
        
        
        this.ruta = "/WEB-INF/bienvenido.jsp";
        
		RequestDispatcher respuesta = request.getRequestDispatcher(this.ruta);
		respuesta.forward(request, response);

 }

}
